package com.ouc.yyi.service.impl;
//
//                       _oo0oo_
//                      o8888888o
//                      88" . "88
//                      (| -_- |)
//                      0\  =  /0
//                    ___/`---'\___
//                  .' \\|     |// '.
//                 / \\|||  :  |||// \
//                / _||||| -:- |||||- \
//               |   | \\\  -  /// |   |
//               | \_|  ''\---/''  |_/ |
//               \  .-\__  '-'  ___/-. /
//             ___'. .'  /--.--\  `. .'___
//          ."" '<  `.___\_<|>_/___.' >' "".
//         | | :  `- \`.;`\ _ /`;.`/ - ` : | |
//         \  \ `_.   \_ __\ /__ _/   .-` /  /
//     =====`-.____`.___ \_____/___.-`___.-'=====
//                       `=---='
//
//
//     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
//               佛祖保佑         永无BUG
//

import com.ouc.yyi.dao.UserMapper;
import com.ouc.yyi.pojo.User;
import com.ouc.yyi.service.FindUserByIdService;
import com.ouc.yyi.tools.RedisUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

/**
 * @author: yyi
 * @date: 2019/3/4 16:23
 * @parameters:
 * @desc:
 **/
@Service
public class findUserByIdServiceImpl implements FindUserByIdService {
    @Autowired
    private UserMapper userMapper;
    @Autowired
    private RedisUtil redisUtil;
    /**
     * 根据ID获取个人信息，现存缓存中查询，查询到后返回
     * 缓存查询不到,从数据库中进行查询,并将查询 的结果返回,顺便将返回的结果插入缓存
     *
     * */

    @Override
    public User selectUserById(Integer id) {
        String redisKey = "redisKey_"+String.valueOf(id);
        boolean hasKey = redisUtil.hasKey(redisKey);
        if (hasKey){
            System.out.println("缓存中获取数据");
            User user = (User) redisUtil.get(redisKey);
            return user;
        }else{
            System.out.println("数据库中获取数据");
            User user = userMapper.findUserById(id);
            redisUtil.set(redisKey,user);
            redisUtil.expire(redisKey,5);
            return user;
        }

    }

    @Override
    public boolean insertUser(User user) {
        return userMapper.insertUser(user);
    }
}
